#ifndef _BUOLA_CHART_CMAPPING_H_
#define _BUOLA_CHART_CMAPPING_H_

#include <buola/chart.h>

#include <vector>

namespace buola { namespace chart {

class CMapping
{
public:
    CMapping();
    virtual ~CMapping();
    
public:
///\name mapping functions
//@{
    virtual double Map(double pV)=0;
    virtual double InverseMap(double pV)=0;
    virtual int GetTicks(std::vector<double> &pTicks,double pMinDist)=0;

    void SetSrcLimits(double pMinSrc,double pMaxSrc);
    void SetDestLimits(double pMinDest,double pMaxDest);

    virtual void AutoScale(double pMin,double pMinPos,double pMax,bool pNice,double pMinDist)=0;
    virtual void Update()=0;
//@}

    double mMinSrc,mMaxSrc,mMinDest,mMaxDest;
};

/*namespace chart*/ } /*namespace buola*/ }

#endif
